import java.util.Arrays;

/**
 * \* Created with IntelliJ IDEA.
 * \* User: Administrator
 * \* Date: 2021/10/25
 * \* Time: 20:13
 * \* To change this template use File | Settings | File Templates.
 * \* Description:
 * \
 */
public class TestDemo {


    //1.实现一个方法 avg, 以数组为参数, 求数组中所有元素的平均值(注意方法的返回值类型).
//    public static double avg(int[] arr){
//        int sum=0;
//        for(int i=0;i<arr.length;i++){
//            sum+=arr[i];
//        }
//        return (double) sum/(double) arr.length;
//    }
//
//    public static void main(String[] args) {
//        int[] arr={1,2,3,4,5,6};
//        System.out.println(avg(arr));
//    }

    //2.实现一个方法 sum, 以数组为参数, 求数组所有元素之和

//    public static int sum(int[]arr){
//        int sum=0;
//        for(int i=0;i<arr.length;i++){
//            sum+=arr[i];
//        }
//        return sum;
//    }
//
//    public static void main(String[] args) {
//        int[] arr={1,2,3,4,5,6};
//        System.out.println(sum(arr));
//    }


    //3.实现一个方法 transform, 以数组为参数, 循环将数组中的每个元素 乘以 2 ,
    // 并设置到对应的数组元素上. 例如 原数组为 {1, 2, 3}, 修改之后为 {2, 4, 6}

//    public static void transform(int[]arr){
//        for(int i=0;i<arr.length;i++){
//            arr[i]=arr[i]*2;
//        }
//
//    }
//    public static void main(String[] args) {
//        int[] arr={1,2,3};
//        transform(arr);
//        for(int i=0;i<arr.length;i++){
//            System.out.print(arr[i]+" ");
//        }
//    }

    //4.实现一个方法 printArray, 以数组为参数, 循环访问数组中的每个元素, 打印每个元素的值

//    public static void printArray(int []arr){
//        for(int i=0;i<arr.length;i++){
//            System.out.print(arr[i]+" ");
//        }
//    }
//    public static void main(String[] args) {
//
//        int []arr={1,2,3,4,5,6};
//        printArray(arr);
//
//    }

    //5.创建一个 int 类型的数组, 元素个数为 100, 并把每个元素依次设置为 1 - 100

//    public static void main(String[] args) {
//        int[]arr=new int[100];
//        for(int i=0;i<100;i++){
//            arr[i]=i+1;
//        }
//        System.out.print(Arrays.toString(arr));
//    }

    //6.给定一个整型数组, 实现冒泡排序(升序排序)
//
//    public static void sort(int[] arr){
//        for(int i=0;i<arr.length-1;i++){
//            for(int j=0;j< arr.length-1-i;j++){
//                if(arr[j]>arr[j+1]) {
//                    int temp = arr[j];
//                    arr[j] = arr[j + 1];
//                    arr[j + 1] = temp;
//                }
//            }
//        }
//    }
//
//    public static void main(String[] args) {
//        int [] arr={10,9,8,7,6,5,4,3,2,1};
//        sort(arr);
//        System.out.println(Arrays.toString(arr));
//    }

    //7.给定一个整型数组, 判定数组是否有序（递增）

//    public static boolean isSorted(int[]arr){
//        for(int i=0;i<arr.length;i++){
//            if(arr[i]<=arr[i+1]){
//                return true;
//            }
//        }
//        return false;
//    }
//    public static void main(String[] args) {
//        int[]arr={2,3,4,2,45,6};
//        System.out.println(isSorted(arr));
//
//    }

    //8.给定一个有序整型数组, 实现二分查找

//    public static int binarySearch(int []arr,int fine){
//        int left=0;
//        int right=arr.length-1;
//        for(int i=0;i<arr.length;i++){
//            while (left<=right){
//                int mid=(left+right)/2;
//                if(fine<arr[mid]){
//                    right=mid-1;
//                }else if(fine>arr[mid]){
//                    left=mid+1;
//                }else {
//                    return mid;
//                }
//            }
//        }
//        return -1;
//    }
//
//    public static void main(String[] args) {
//        int []arr={1,2,3,4,5,6,7,8};
//        System.out.println(binarySearch(arr, 4));
//    }

    //9.实现一个方法 copyOf, 对一个整型数组进行拷贝, 得到一个新的数组.

//    public static int[] copy(int[]arr){
//        int[] ret=new int[arr.length];
//        for(int i=0;i< arr.length;i++){
//            ret[i]=arr[i];
//        }
//        return ret;
//    }
//    public static void main(String[] args) {
//        int []arr={1,2,3,4,5,6};
//        int[]ret1=copy(arr);
//        System.out.print("原来的数组：");
//        System.out.println(Arrays.toString(arr));
//        System.out.print("复制的数组：");
//        System.out.println(Arrays.toString(ret1));
//    }

    //10.实现一个方法 toString, 把一个整型数组转换成字符串. 例如数组 {1, 2, 3} ,
    // 返回的字符串为 "[1, 2, 3]", 注意 逗号 的位置和数量.
//
//    public static String toStrin(int[] arr){
//        String a="[";
//        for (int i=0;i< arr.length;i++){
//            a+=arr[i];
//            if(i!= arr.length-1){
//                a+=",";
//            }
//        }
//        a+="]";
//        return a;
//    }
//    public static void main(String[] args) {
//        int []arr={1,2,3};
//        String a = toStrin (arr);
//        System.out.println(a);
//    }

   //11.给定一个非空整数数组，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素。

    public static int number(int[]arr){
        int num=0;
        for(int i=0;i< arr.length;i++){
            num^=arr[i];
        }
        return num;
    }
    public static void main(String[] args) {
        int []arr={1,2,1,2,3,3,4,5,4};
        System.out.println(number(arr));
    }
}
